package com.inspur.edp.ai.flow.metadata;

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.inspur.edp.ai.flow.metadata.json.JsonType;
import com.inspur.edp.ai.flow.metadata.json.JsonTypeDeserializer;
import com.inspur.edp.common.expr.ExprJsonDeserializer;
import com.inspur.edp.common.expr.Express;
import com.inspur.edp.common.expr.evaluator.ExpressEvaluator;
import com.inspur.edp.common.type.TypeRefer;
import lombok.Data;

/**
 * @author lizhaorui
 * @date 2025/8/14
 * @description
 */

@Data
public class Parameter {

    /**
     * 参数编号
     */
    private String code;

    /**
     * 参数名称
     */
    private String name;

    /**
     * 参数描述
     */
    private String description;


    /**
     * 参数类型
     */
    private TypeRefer type;

    /**
     * 自定义结构
     */
    @JsonDeserialize(using = JsonTypeDeserializer.class)
    private JsonType schema;

    /**
     * 参数值表达式，前端画布
     */

    @JsonDeserialize(using = ExprJsonDeserializer.class)
    private Express valueExpr;

    /**
     * 支持手写的场景
     */
    private String value;


    @JsonIgnore
    private ExpressEvaluator valueExprEvaluator;

    /**
     * 是否为必填字段
     */
    private boolean required;

    /**
     * 是否只读，不能修改
     */
    private boolean readOnly;

    @JsonIgnore
    public boolean isCustomType() {
        if (this.schema != null) {
            return true;
        }
        return false;
    }

}